//
//  TLBaseTableViewController.swift
//  TLSinaWeiBo
//
//  Created by 谭亮 on 16/5/11.
//  Copyright © 2016年 tanliang. All rights reserved.
//

import UIKit
//:->根据用户使用登录显示不同的界面(1.tableView 2.显示自定义的访客视图) 
//->6.控制器遵守TLVisitorViewDelegate协议,在UITableViewController后面加逗号添加代理
class TLBaseTableViewController: UITableViewController {

    var userLogin: Bool = false //:用户没有进行登录
    
    override func loadView() {
        if userLogin {
            //:显示按照正常的流程(tableView)
            self.loadView()
        } else {
            //:用户没有登录(自己再弄一套界面)
            view = visitorView
            
            //:5.设置控制器成为visitorView的代理
            visitorView.delegate = self
            
            //:->根据不同的控制器设置不同的访客视图内容
            print("self : \(self)") //:我们创建的都是子类 self是子类的类型
            //:->is:来判断一个对象是否为指定类型
            if self is TLHomeViewController {
                visitorView.startRotationAnimation()
                //:->设置访客视图内容
            } else if self is TLMessageViewController {
                //print("TLMessageViewController")
                visitorView.setupVisitorInfo("visitordiscover_image_message", message: "登录后,别人评论你的微博,发给你的消息,都会在这里收到通知")
            } else if self is TLDiscoverViewController {
                //print("TLDiscoverViewController")
                visitorView.setupVisitorInfo("visitordiscover_image_message", message: "登录后,最新、最热微博尽在掌握,不再会与实事潮流擦肩而过")
            } else if self is TLProfileViewController {
                //print("TLProfileViewController")
                visitorView.setupVisitorInfo("visitordiscover_image_profile", message: "登录后,你的微博、相册、个人资料会显示在这里,展示给别人")
            }
            //:->设置导航栏按钮
            //导航栏上面显示的内容不是导航栏控制器决定的,而是根据导航控制器正在显示的子控制器来决定的
            self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "注册", style: UIBarButtonItemStyle.Plain, target: self, action: "visitorViewDidClickRegister")
            self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "登录", style: UIBarButtonItemStyle.Plain, target: self, action: "visitorViewDidClickLogin")
        }
    }
    
    
    // MARK: - 懒加载
    //->访客视图
    //:private 私有 除了这个文件外,别人不知道有这个属性或方法.和OC将属性或方法定义在.m一样
    lazy var visitorView: TLVisitorView = TLVisitorView()//: [[TLVisitorview alloc] init] -> initWithFrame:
}

// MARK: - 扩展
//:扩展对象实现协议->好处可以将一个协议的代码写在一起
//->6.控制器遵守TLVisitorViewDelegate协议
//:也是属于这个类的方法
extension TLBaseTableViewController: TLVisitorViewDelegate {
    
    // MARK - 实现代理方法
    //:7.实现协议的方法
    func visitorViewDidClickRegister() {
        print("__FUNCTION__")
    }
    
    func visitorViewDidClickLogin() {
        print("__FUNCTION__")
        //:->Modal出授权控制器
        let oauthVC = TLOauthViewController()
        
        let nav = UINavigationController(rootViewController: oauthVC)
        self.presentViewController(nav, animated: true, completion: nil)
        
    }

}
